package com.papers.juan.service;

import com.papers.common.core.domain.PageQuery;
import com.papers.common.core.page.TableDataInfo;
import com.papers.juan.domain.TJuanPaperBakeup;
import com.papers.juan.domain.TJuanQuestion;
import com.papers.juan.domain.bean.PaperDetailBean;
import com.papers.juan.domain.bean.PaperStatisticsBean;
import com.papers.juan.domain.bean.QuestionPropertyImportBean;
import com.papers.juan.domain.bean.RandomTakeOutPaperBean;
import com.papers.juan.domain.dto.PaperBakeupDto;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.util.List;

/**
 * 试卷备份Service接口
 *
 * @author libo
 * @date 2022/12/2 11:33
 */
public interface ITJuanPaperBakeupService {

    /**
     * 根据id获取备份信息
     *
     * @param id 备份id
     * @return 备份信息
     */
    TJuanPaperBakeup queryBakeupById(String id);

    /**
     * 根据试卷id新增备份信息
     *
     * @param paperId 试卷id
     */
    void insertByPaperId(String paperId);

    /**
     * 修改试卷备份信息
     *
     * @param bakeup 试卷备份信息
     */
    Boolean updateBakeup(TJuanPaperBakeup bakeup);

    /**
     * 根据试卷id删除试卷备份信息
     *
     * @param id 试卷备份id
     */
    void deleteById(String id) throws FileNotFoundException;

    /**
     * 获取试卷备份列表
     *
     * @param dto       试卷备份bto
     * @param pageQuery 分页条件
     * @return 试卷备份列表
     */
    TableDataInfo<TJuanPaperBakeup> queryBakeupList(PaperBakeupDto dto, PageQuery pageQuery);

    /**
     * 随机抽卷
     *
     * @param bean 随机抽取试卷bean
     * @return 试卷列表
     */
    List<TJuanPaperBakeup> randomTakeOutPaper(RandomTakeOutPaperBean bean);

    /**
     * 根据id获取题目列表
     *
     * @param id 备份id
     * @return 题目列表
     */
    List<TJuanQuestion> queryQuestionsById(String id);

    /**
     * 根据id获取试卷统计数据
     *
     * @param id 备份id
     * @return 试卷统计数据
     */
    PaperStatisticsBean queryPaperStatisticsById(String id);

    /**
     * 根据试卷备份id获取试卷详情
     *
     * @param id 备份id
     * @return 试卷详情
     */
    PaperDetailBean queryPaperDetailById(String id);

    /**
     * 导出试卷备份json信息
     *
     * @param id       备份id
     * @param response 响应
     */
    void exportPaperBackupJson(String id, HttpServletResponse response);

    /**
     * 导入试卷备份json信息
     *
     * @param file 试卷备份json文件
     */
    void importPaperBackupJson(MultipartFile file);

    /**
     * 导入试卷
     *
     * @param file     试题属性导入bean
     * @param courseId 试卷备份文件
     * @param wordFile 试卷文件
     */
    void importData(List<QuestionPropertyImportBean> file, String courseId, MultipartFile wordFile);

}
